package main

import (
	"fmt"
)

type student struct {//定义学生结构体对象
	Name string//属性是姓名
}

func zhoujielun(v interface{})  { //创建一个函数zhoujielun,参数为接口类型
	switch msg:=v.(type){ //执行条件分支
	case *student: //类型必须一致
		fmt.Println(msg.Name)
	case student://类型必须一致
		fmt.Println(msg.Name)

		fmt.Println(msg.Name)
		//case *student,student:
			//v:=reflect.ValueOf(msg)
			//field:=v.Field(0)
			//fmt.Println(field)
		}
}

func main()  {
	s1:=student{Name:"王二狗"}
	s2:=&student{"李小花"}
	s3:="hehe"
	zhoujielun(s1)
	zhoujielun(s2)
	zhoujielun(s3)
}

//总结。switch的case选择的参数必须类型一致才可以。，所以分开两个case
//或者用反射也可以